package com.bizframework.security.convertor;


import org.apache.commons.lang.NullArgumentException;

import com.bizframework.security.domain.entity.Permission;
import com.bizframework.security.dto.PermissionDTO;
import com.bizframework.security.dto.PermissionTreeDTO;
import com.bizframework.security.dto.PermissionTreeNodeDTO;

public class PermissionTreeDTOConvertor {

	public static Permission dtoToEntity(PermissionDTO dto, Permission entity) {
		if (dto == null) {
			entity = null;
			return entity;
		}
		if (entity == null) {
			throw new NullArgumentException("entity");
		}

		entity.setId(dto.getId());
		entity.setCode(dto.getCode());
		entity.setDescription(dto.getDescription());
		entity.setName(dto.getName());
		
		return entity;
	}

	public static PermissionDTO entityToDTO(PermissionDTO dto, Permission entity) {
		if (entity == null) {
			dto = null;
			return dto;
		}

		if (dto == null) {
			throw new NullArgumentException("dto");
		}
		
		dto.setId(entity.getId());
		dto.setCode(entity.getCode());
		dto.setDescription(entity.getDescription());
		dto.setName(entity.getName());
		
		if (entity.getParentPermission() != null) {
			dto.setParentId(entity.getParentPermission().getId());
		}
		return dto;
	}
	
	public static PermissionTreeDTO entityToTreeDTO(PermissionTreeDTO dto, Permission entity) {
		if (entity == null) {
			dto = null;
			return dto;
		}

		if (dto == null) {
			throw new NullArgumentException("dto");
		}
		
		dto.setId(entity.getId());
		dto.setCode(entity.getCode());
		dto.setText(entity.getName());
		
		if (entity.getParentPermission() != null) {
			dto.setParentId(entity.getParentPermission().getId());
		}
		return dto;
	}
	
	public static PermissionTreeNodeDTO entityToTreeNodeDTO(PermissionTreeNodeDTO dto, Permission entity) {
		if (entity == null) {
			dto = null;
			return dto;
		}

		if (dto == null) {
			throw new NullArgumentException("dto");
		}
		
		dto.setId(entity.getId());
		dto.setCode(entity.getCode());
		dto.setText(entity.getName());
		
		if (entity.getParentPermission() != null) {
			dto.setParentId(entity.getParentPermission().getId());
		}
		return dto;
	}
}